The present application relates generally to an improved data processing apparatus and method and more specifically to mechanisms for automatically correcting graphical user interface automation using machine learning.
A graphical user interface (GUI) is a type of user interface that allows users to interact with electronic devices through graphical icons and visual indicators. The actions in a GUI are usually performed through direct manipulation of the graphical elements. GUIs are used in desktop applications, Web-based applications, and applications designed for handheld mobile devices.
In software testing, test automation is the use of special software separate from the software being tested to control the execution of tests and the comparison of actual outcomes with predicted outcomes. Test automation can automate some repetitive but necessary tasks in a formalized testing process already in place, or perform additional testing that would be difficult to do manually. Test automation is critical for continuous delivery and continuous testing.
Some software testing tasks, such as extensive low-level interface regression testing, can be laborious and time-consuming to do manually. In addition, a manual approach might not always be effective in finding certain classes of defects. Test automation offers a possibility to perform these types of testing effectively. Once automated tests have been developed, they can be run quickly and repeatedly. Many times, this can be a cost-effective method for regression testing of software products that have a long maintenance life. Even minor patches over the lifetime of the application can cause existing features to break which were working at an earlier point in time.
There are many approaches to test automation, however the general approaches used widely are as follows:
Graphical user interface (GUI) testing: a testing framework that generates user interface events such as keystrokes and mouse clicks, and observes the changes that result in the user interface, to validate that the observable behavior of the program is correct.
Application programming interface (API) driven testing: a testing framework that uses a programming interface to the application to validate the behavior under test.
Test automation tools can be expensive, and are usually employed in combination with manual testing. Test automation can be made cost-effective in the long term, especially when used repeatedly in regression testing. For example, a test case for common flow of an application can be a good candidate for test automation.
In automated testing the test engineer or software quality assurance person must have software coding ability, since the test cases are written in the form of source code which, when run, produce output according to the assertions that are a part of it. One way to generate test cases automatically is model-based testing through use of a model of the system for test case generation, but research continues into a variety of alternative methodologies for doing so. In some cases, the model-based approach enables non-technical users to create automated business test cases in plain English so that no programming of any kind is needed in order to configure them for multiple operating systems, browsers, and smart devices.